#include <stdio.h>
#include <task.h>

/*
变量名：task_list
功能说明：静态定义的任务列表数组，包含任务ID、名称、程序路径和进程ID
类型：static Task[]
日期：2025年2月
*/
static Task task_list[] = {
    {   
        .id = 1,
        .name = "JPEG Capture", 
        .program_path = "/home/face_recognize/jpeg.sh", 
        .pid = -1,
    },

    {   
        .id = 2,
        .name = "Face Recognition", 
        .program_path = "/home/face_recognize/atk_rockx_face_recognition", 
        .pid = -1,
    },

    {   
        .id = 3,
        .name = "Fatigue Monitoring", 
        .program_path = "/home/face_recognize/fatigue", 
        .pid = -1,
    },
};
/*
 *  函数名：get_task_list
 *  功能说明：获取任务列表并返回任务数量
 *  参数：count - 用于返回任务数量的指针
 *  返回值：Task* - 任务列表指针
 *  日期：2025年3月
 */
Task* get_task_list(int *count)
{
    if(count == NULL)
    {
        printf("Error: count pointer is NULL\n");
        return NULL;
    }
    *count = sizeof(task_list) / sizeof(task_list[0]);
    return task_list;
}

/*
 *  函数名：get_task_by_id
 *  功能说明：根据任务ID查找对应的任务
 *  参数：task_id - 要查找的任务ID
 *  返回值：Task* - 找到的任务指针，如未找到则返回NULL
 *  日期：2025年3月
 */
Task* get_task_by_id(int task_id)
{
    int task_count;
    Task *tasks = get_task_list(&task_count);
    for(int i = 0; i < task_count; i++)
    {
        if(tasks[i].id == task_id)
        {
            return &tasks[i];
        }
    }
    fprintf(stderr, "Task ID %d not found\n", task_id);
    
    return NULL;
}